tg-me.com/devopsslib/3672
Last Update:
🧑💻 Практический пример для Ansible
Основной элемент в Ansible — это playbook, который описывает последовательность задач для выполнения на удалённых серверах.
Чтобы написать хороший плейбук нужно определиться с его целью. Цель должна быть чётко сформулирована, например: установка пакетов, настройка сервисов, деплой приложения. inventory.ini
Inventory.ini — это стандартный файл инвентаризации в Ansible, где перечисляются хосты и группы хостов, на которых будут выполняться плейбуки.
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com
db2.example.com
[backup_server]
backup-server.example.com
[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=~/.ssh/id_rsa
Затем можно написать сам плейбук. Как пример — плейбук, шифрует архив с помощью GPG и загружает на удалённый сервер хранения:
- name: Резервное копирование с шифрованием и загрузкой
hosts: localhost
vars:
backup_files:
- /etc/nginx/nginx.conf
- /var/www/html
backup_dest: /tmp/backup.tar.gz
gpg_recipient: "[email protected]"
tasks:
- name: Создать архив с файлами
archive:
path: "{{ backup_files }}"
dest: "{{ backup_dest }}"
- name: Зашифровать архив GPG
command: "gpg --output {{ backup_dest }}.gpg --encrypt --recipient {{ gpg_recipient }} {{ backup_dest }}"
args:
removes: "{{ backup_dest }}"
- name: Копировать зашифрованный архив на удалённый сервер
copy:
src: "{{ backup_dest }}.gpg"
dest: "/backup/{{ inventory_hostname }}_backup.gpg"
delegate_to: backup_server
Это может быть небольшой файл, который можно переиспользовать:
backup_files:
- /etc/nginx/nginx.conf
- /var/www/html
backup_dest: /tmp/backup.tar.gz
gpg_recipient: "[email protected]"
Бонус: плейбук для создания кастомного ASCII-арт баннера на удалённых серверах.
- name: Создать ASCII-арт баннер на сервере
hosts: all
become: yes
tasks:
- name: Установить figlet для генерации ASCII-арта
apt:
name: figlet
state: present
update_cache: yes
- name: Сгенерировать ASCII баннер и записать в файл /etc/motd
shell: echo "Welcome to $(hostname)" | figlet > /etc/motd
args:
creates: /etc/motd
Ansible можно использовать не только для настройки, но и для улучшения пользовательского опыта.